//package com.example.filter;
//
//import com.alibaba.druid.support.json.JSONUtils;
//import com.example.utils.R;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.util.AntPathMatcher;
//
//import javax.servlet.*;
//import javax.servlet.annotation.WebFilter;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
///**
// * Author: lfanh
// * Date: 2022/11/4 16:40
// * @author Administrator*/
//
//
//@Slf4j
//@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")
//public class LoginCheckFilter implements Filter {
//
//    public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
//
//    @Override
//    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
//        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
//
//        //1、获取本次请求的URI
//        String requestURI = httpServletRequest.getRequestURI();
//        log.info("拦截到请求：{}",requestURI);
//        //定义不需要处理的请求路径
//        String[] urls = new String[]{
//                "/admin/login",
//                "/admin/logout",
//                "/user/login",
//                "/user/logout",
//                "/user"
//
//        };
//
//        //2、
//        boolean check = check(urls,requestURI);
//
//        //3、若不需要处理，则直接放行
//        if (check){
//            log.info("本次{}该请求不需要处理",requestURI);
//            chain.doFilter(httpServletRequest,httpServletResponse);
//            return;
//        }
//
//        //4、判断登录状态，若已经登录则直接放行
//        if(httpServletRequest.getSession().getAttribute("admin") != null){
//            log.info("用户已登录，用户id为：{}",httpServletRequest.getSession().getAttribute("admin"));
//            chain.doFilter(httpServletRequest,httpServletResponse);
//            return;
//        }
//
//        //5、若未登录则返回未登录结果，通过输出流结果方式向客户端响应数据
//        httpServletResponse.getWriter().write(JSONUtils.toJSONString(R.error("NOTLOGIN")));
//
//    }
//
///*
//    * 路径匹配，检查本次请求是否需要放行
//    *@Param urls
//    * @Param requestURI
//    * @return
//    **/
//
//    public boolean check(String[] urls,String requestURI){
//        for (String url : urls) {
//            boolean match = PATH_MATCHER.match(url,requestURI);
//            if(match){
//                return true;
//            }
//        }
//        return false;
//    }
//
//}
